home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / f1 / utils1.arj / MSXGC.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-05-12  |  5.5 KB  |  231 lines

  1. ;
  2. ; ***********************************
  3. ; * CONVERSOR DE PANTALLAS GRAFICAS *
  4. ; *    para IBM PC y compatibles    *
  5. ; ***********************************
  6. ;  ________________________________
  7. ;  SCREEN 2 (MSX) ----> MODO 6 (PC)
  8. ;    256*196              640*200
  9. ;  --------------------------------
  10. ;       AUTOR: Juan C. Enrique
  11. ;
  12. ;      Version 1.0:  07/05/1992
  13. ;
  14. ;
  15.         
  16. CODE_SEG        SEGMENT PUBLIC
  17.                 ASSUME  CS:CODE_SEG, DS:CODE_SEG
  18.  
  19.         ORG     100H
  20.  
  21.         EXTRN   LOADFILE:NEAR          ; uso del proc. externo 1
  22.  
  23. BUFFCARG0 EQU CS:1000h-7
  24. BUFFCARGA EQU CS:1000h
  25. BUFFER    EQU CS:3000h
  26.  
  27. PRINCIPAL:
  28.  
  29.         CALL    inpfile
  30.  
  31. ;
  32. ; reorganiza los datos leidos del BUFFCARGA al BUFFER
  33. ; ---------------------------------------------------
  34.  
  35.         MOV     DI,0
  36.         MOV     SI,DI
  37.         MOV     BX,OFFSET BUFFCARGA
  38.         MOV     AX,BX
  39.         MOV     DX,OFFSET BUFFER
  40.  
  41.         MOV     CX,24
  42.  
  43. BUCLE1: PUSH    CX
  44.         MOV     CX,8
  45.  
  46.     BUCLE2: PUSH    CX
  47.             MOV     DI,0                ; rein. contador linea
  48.             MOV     CX,32               ; bytes por linea
  49.  
  50.         BUCLE3: PUSH    AX
  51.                 MOV     AL,CS:[BX+DI]
  52.                 PUSH    BX
  53.                 MOV     BX,DX
  54.                 MOV     CS:[BX+SI],AL
  55.                 POP     BX
  56.                 POP     AX
  57.                 INC     SI
  58.                 ADD     DI,8
  59.                 LOOP    BUCLE3
  60.  
  61.             ADD   BX,1                  ; sigu. linea en BUFFCARGA
  62.             POP   CX
  63.             LOOP  BUCLE2
  64.  
  65.  
  66.         ADD   AX,256                    ; sigu. bloque 8x24 en BUFFCARGA
  67.         MOV   BX,AX
  68.         POP   CX
  69.         LOOP  BUCLE1
  70.  
  71.  
  72.   ;
  73.   ; salida a pantalla de los datos en 2 bancos
  74.   ; ------------------------------------------
  75.  
  76.     MOV    AH,0
  77.     MOV    AL,6
  78.         INT     10H                     ; modo 6 grafico
  79.  
  80.         MOV     AX,0B800H
  81.         MOV     ES,AX                   ;  ram de VIDEO en seg.extra
  82.  
  83.  
  84.         MOV     DX,OFFSET BUFFER
  85.         MOV     BX,0                       ; dir VRAM 1º banco
  86.         MOV     SI,0
  87. BUCL:   
  88.                 MOV     CX,96              ; 192/2 lineas por banco
  89.         BUCL1:  PUSH    CX
  90.  
  91.                 MOV     DI,0               ;      contadore
  92.  
  93.                 MOV     CX,32              ; 32 bytes/linea
  94.  
  95.                    BUCL2:  PUSH    AX
  96.                            PUSH    BX
  97.                            MOV     BX,DX
  98.                            MOV     AL,CS:[BX+DI]
  99.                            POP     BX
  100.                            MOV     ES:[BX+DI],AL
  101.                            INC     DI
  102.                            POP     AX
  103.  
  104.                 LOOP   BUCL2
  105.  
  106.                 ADD     BX,80           ; inicio sig. linea VRAM
  107.                 ADD     DX,64           ; lee lineas de 2en2 en BUFFER
  108.                 POP     CX
  109.                 LOOP    BUCL1
  110.  
  111.                 CMP     SI,0
  112.                 JNE     END
  113.  
  114.  
  115.         INC     SI
  116.  
  117.         MOV     BX,8192             ; dir VRAM 2º banco
  118.         MOV     DX,OFFSET BUFFER+32
  119. JMP     BUCL
  120.  
  121.  
  122. END:    CALL    key13
  123.         MOV     AH,0
  124.         MOV     AL,2
  125.         INT     10H
  126.  
  127.         MOV     DX,OFFSET TEXTO3
  128.         MOV     AH,9
  129.         INT     21H
  130.  
  131.         INT     20H                     ; vuelve al DOS
  132. ;
  133. ;  * Otros Procedimientos *
  134. ;
  135.  
  136. key13:
  137.         PUSH    AX
  138. key13b:
  139.         MOV     AH,8
  140.     INT    21H
  141.     CMP    AL,13
  142.         JNE     key13b
  143.         POP     AX
  144.         RET
  145.  
  146. ;
  147.  
  148. inpfile:
  149.         MOV     DX,OFFSET TEXTO0
  150.         MOV     AH,9
  151.         INT     21H
  152.  
  153. inpfile2:
  154.         MOV     DX,OFFSET TEXTO1
  155.         MOV     AH,9
  156.         INT     21H
  157.  
  158.         LEA     DX,filebuf
  159.         MOV     AL,10
  160.         MOV     AH,12
  161.         INT     21H                     ; borra buf. teclado y lee cadena
  162.  
  163.         XOR     AX,AX
  164.         MOV     AL,BYTE PTR [filebuf+1]
  165.         CMP     AX,0
  166.         JZ      inpfile2
  167.         MOV     BX,AX
  168.         MOV     BYTE PTR file[BX],0
  169.  
  170.  
  171.         MOV     DX,OFFSET file          ; nom. y cam. fichero
  172.         MOV     BX,OFFSET BUFFCARG0     ; zona de transf
  173.         MOV     CX,6144+7               ; tamaño pantalla msx
  174.         CALL    LOADFILE
  175.         JC      error
  176.         RET
  177.  
  178. error:
  179.         LEA     DX,TEXTO2
  180.     MOV    AH,9
  181.     INT    21H
  182.         JMP     inpfile2
  183.  
  184. ;
  185.  
  186. CLS:
  187.         MOV     AL,0
  188.         MOV     CX,0
  189.         MOV     DH,24
  190.         MOV     DL,79
  191.         MOV     BH,7
  192.         MOV     AH,6
  193.         INT     10H
  194.         MOV     DX,0
  195.         MOV     BH,0
  196.         MOV     AH,2
  197.         INT     10H
  198.         RET
  199.  
  200. ;
  201. ;  ** Zona de DATOS ***
  202. ;
  203.  
  204.  
  205. TEXTO0          DB 10,13,"******************************************"
  206.                 DB 10,13,"* MSXGC.COM v1.0 / Juan C.Enrique May'92 *"
  207.                 DB 10,13,"******************************************"
  208.                 DB 10,13
  209.                 DB 10,13," Este programa adapta pantallas graficas de"
  210.                 DB 10,13,"MSX en modo SCREEN2 a modo 6 monocromo PC."
  211.                 DB 10,13,10,13,"$"
  212.  
  213. TEXTO1          DB 10,13,"Nombre del fichero : $"
  214.  
  215. TEXTO2          DB 7,10,13,"* ERROR: Fichero no encontrado !",10,13,"$"
  216.  
  217. TEXTO3          DB "* OK: MSXGC v1.0 terminado!",10,13,10,13,"$"
  218. ;
  219.  
  220. Vram1           DB 0,0
  221. Vram2           DB 0,0
  222. Buf1            DB 0,0
  223. Buf2            DB 0,0
  224.  
  225. filebuf         DB 38,0
  226. file            DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  227.                 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  228.  
  229. CODE_SEG        ENDS
  230.                 END     PRINCIPAL
  231.